﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>
//#include<ctype.h>
//
//int main()
//{
//	//int ret = islower('A');
//	//int ret = islower('a');
//	//int ret = isspace(' ');
//	int ret = isspace('a');
//
//	printf("ret = %d\n", ret);
//
//	return 0;
//}


////写⼀个代码，将字符串中的⼩写字⺟转⼤写，其他字符不变。
//#include<stdio.h>
//#include<ctype.h>
//
//int main()
//{
//	char str[] = "I Am a Student";
//	int i = 0;
//	while (str[i++] != '\0')
//	{
//		if (!isupper(str[i]))
//			str[i] = toupper(str[i]);
//
//		//i++;
//	}
//
//	printf("%s\n", str);
//
//	return 0;
//}


//#include<stdio.h>
//#include<ctype.h>
//
//int main()
//{
//	printf("%c\n", toupper('a'));
//	printf("%c\n", tolower('A'));
//	printf("%c\n", toupper('B'));
//
//	return 0;
//}


////strlen 的使⽤和模拟实现 --- 计算字符串的长度     '\0' ascii码是 0
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//////计数器版本
////size_t my_strlen(const char* str)
////{
////  assert(str != NULL);
////	size_t cnt = 0;
////	while (*str++ != '\0')
////	{
////		cnt++;
////	}
////	return cnt;
////}
//////指针版本
////size_t my_strlen(const char* str)
////{
////  assert(str != NULL);
////	char* star = str;
////	while (*str++)
////		;
////	return str - star - 1;
////}
////递归版本
//size_t my_strlen(const char* str)
//{
//	assert(str != NULL);
//	if (*str == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(str + 1);
//}
// 
//int main()
//{
//	char str[] = "abcdef";
//
//	//int ret = strlen(str);
//	size_t ret = my_strlen(str);
//	printf("%zd\n", ret);
//
//	return 0;
//}


////strcpy 的使⽤和模拟实现 --- 用于复制字符串
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//
//char* my_strcpy(char* dest, const char* src)
//{
//	assert(dest && src);
//	char* ret = dest;
//	while (*dest++ = *src++)
//		;
//	return ret;
//}
//
//int main()
//{
//	char str1[] = "xxxxxxxxxxxxxxxxx";
//	char str2[] = "hello C";
//
//	//char* str3 = strcpy(str1, str2);
//	char* str3 = my_strcpy(str1, str2);
//	printf("%s\n", str3);
//
//	return 0;
//}



//strcat 函数用来连接字符串
//函数返回的是目标空间的起始地址
//strcat 的使⽤和模拟实现

#include<stdio.h>
#include<string.h>
#include<assert.h>

char* my_strcat(char* dest,const char* src)
{
	assert(dest && src);
	char* ret = dest;
	while (*dest != '\0')
		dest++;
	while (*dest++ = *src++)
		;
	return ret;
}

int main()
{
	char str1[20] = "hello ";
	char str2[] = "future";

	//char* str3 = strcat(str1, str2);
	char* str3 = my_strcat(str1, str2);
	printf("%s\n", str3);

	return 0;
}





